StringBuilder এবং StringBuffer ক্লাস দুটি Java.lang প্যাকেজের অন্তর্গত এবং মূলত স্ট্রিং ম্যানিপুলেশন (String manipulation) করার জন্য ব্যবহৃত হয়। তারা বিশেষভাবে mutable (পরিবর্তনশীল) স্ট্রিং-কে ম্যানিপুলেট করতে সহায়ক, যেখানে String ক্লাসটি immutable (অপরিবর্তনশীল)।
StringBuilder এবং StringBuffer দুটি ক্লাসই স্ট্রিংয়ের সাথে কাজ করতে ব্যবহৃত হয়, কিন্তু তাদের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে:
- StringBuffer থ্রেড সেফ (thread-safe), অর্থাৎ একাধিক থ্রেড একসাথে এর উপর কাজ করতে পারবে।
- StringBuilder থ্রেড সেফ নয়, তবে এটি StringBuffer এর চেয়ে দ্রুত কাজ করে, কারণ এতে synchronization ব্যবহৃত হয় না।
তবে, উভয় ক্লাসের বেশ কিছু সাধারণ মেথড রয়েছে যা স্ট্রিং ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।
StringBuilder এবং StringBuffer এর প্রধান মেথডসমূহ:
1. append():
- এটি স্ট্রিংয়ের শেষে নতুন স্ট্রিং যুক্ত করে।
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb); // Output: Hello World
2. insert():
- এটি নির্দিষ্ট একটি ইনডেক্সে স্ট্রিং ইনসার্ট করে।
StringBuilder sb = new StringBuilder("Hello");
sb.insert(5, " World");
System.out.println(sb); // Output: Hello World
3. replace():
- এটি নির্দিষ্ট একটি পরিসরে স্ট্রিং রিপ্লেস করে।
StringBuilder sb = new StringBuilder("Hello World");
sb.replace(6, 11, "Java");
System.out.println(sb); // Output: Hello Java
4. delete():
- এটি একটি নির্দিষ্ট পরিসর থেকে স্ট্রিং ডিলিট করে।
StringBuilder sb = new StringBuilder("Hello World");
sb.delete(5, 11);
System.out.println(sb); // Output: Hello
5. deleteCharAt():
- এটি একটি নির্দিষ্ট ইনডেক্সে থাকা একটি চরিত্র ডিলিট করে।
StringBuilder sb = new StringBuilder("Hello World");
sb.deleteCharAt(5);
System.out.println(sb); // Output: HelloWorld
6. reverse():
- এটি স্ট্রিংটি উল্টো করে দেয়।
StringBuilder sb = new StringBuilder("Hello");
sb.reverse();
System.out.println(sb); // Output: olleH
7. capacity():
- এটি স্ট্রিং বিল্ডারের বর্তমান ক্যাপাসিটি ফেরত দেয়।
StringBuilder sb = new StringBuilder();
System.out.println(sb.capacity()); // Output: 16 (default capacity)
8. ensureCapacity():
- এটি স্ট্রিং বিল্ডারের ক্যাপাসিটি সেট করে, যদি বর্তমান ক্যাপাসিটি কম হয়।
StringBuilder sb = new StringBuilder();
sb.ensureCapacity(100);
System.out.println(sb.capacity()); // Output: 100
9. charAt():
- এটি একটি নির্দিষ্ট ইনডেক্সের চরিত্র ফেরত দেয়।
StringBuilder sb = new StringBuilder("Hello");
System.out.println(sb.charAt(1)); // Output: e
10. setCharAt():
- এটি একটি নির্দিষ্ট ইনডেক্সে চরিত্র সেট করে।
StringBuilder sb = new StringBuilder("Hello");
sb.setCharAt(0, 'h');
System.out.println(sb); // Output: hello
11. substring():
- এটি একটি স্ট্রিং থেকে নির্দিষ্ট পরিসরের সাবস্ট্রিং ফেরত দেয়।
StringBuilder sb = new StringBuilder("Hello World");
String subStr = sb.substring(6, 11);
System.out.println(subStr); // Output: World
12. toString():
- এটি
StringBuilderবাStringBufferএর বর্তমান মানকে একটি স্ট্রিং এ রূপান্তর করে ফেরত দেয়।
StringBuilder sb = new StringBuilder("Hello");
String str = sb.toString();
System.out.println(str); // Output: Hello
13. indexOf():
- এটি একটি স্ট্রিংয়ের মধ্যে একটি নির্দিষ্ট সাবস্ট্রিংয়ের প্রথম উপস্থিতির ইনডেক্স ফেরত দেয়।
StringBuilder sb = new StringBuilder("Hello World");
int index = sb.indexOf("World");
System.out.println(index); // Output: 6
14. lastIndexOf():
- এটি একটি স্ট্রিংয়ের মধ্যে একটি নির্দিষ্ট সাবস্ট্রিংয়ের শেষ উপস্থিতির ইনডেক্স ফেরত দেয়।
StringBuilder sb = new StringBuilder("Hello World World");
int index = sb.lastIndexOf("World");
System.out.println(index); // Output: 12
15. trimToSize():
- এটি
StringBuilderএর ক্যাপাসিটি কমিয়ে প্রয়োজনীয় পরিমাণে ফিট করে।
StringBuilder sb = new StringBuilder();
sb.append("Hello World");
sb.trimToSize();
System.out.println(sb.capacity()); // Output: 12 (the capacity is reduced to the size of the string)
StringBuilder এবং StringBuffer এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | StringBuilder | StringBuffer |
|---|---|---|
| থ্রেড সেফটি | থ্রেড সেফ নয় | থ্রেড সেফ |
| পারফরম্যান্স | দ্রুত (কারণ কোন সিঙ্ক্রোনাইজেশন নেই) | ধীর (কারণ সিঙ্ক্রোনাইজেশন রয়েছে) |
| ব্যবহার | একক থ্রেড অ্যাপ্লিকেশনে ব্যবহৃত হয় | মাল্টিথ্রেডেড অ্যাপ্লিকেশনে ব্যবহৃত হয় |
| ফিচার | একই | একই (প্রধানত থ্রেড সেফটির কারণে ভিন্ন) |
StringBuilder এবং StringBuffer দুইটি ক্লাসই mutable স্ট্রিং অপারেশন সমর্থন করে, যা String ক্লাসের তুলনায় অধিক কার্যকরী। যেখানে String ক্লাসের অবজেক্ট পরিবর্তন করলে নতুন অবজেক্ট তৈরি হয়, সেখানে StringBuilder এবং StringBuffer ক্লাস স্ট্রিংয়ের মূল অবজেক্ট পরিবর্তন করতে পারে, তাই তারা বেশি কর্মক্ষম। তবে, StringBuffer থ্রেড সেফ থাকলেও, StringBuilder থ্রেড সেফ নয় এবং এটি দ্রুত কাজ করে।
Read more